#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdlib>

using namespace std;

string GetStringTongJi(string& str) {
 string str1;
 string str2;
 int pos = str.find('@');
 if (pos == -1) {
  return "ERROR";
 }
 for (int i = 0; i < pos;i++) {
  str1.push_back(str[i]);
 }
 str1.erase(remove(str1.begin(),str1.end(),','),str1.end());
 str1.erase(remove(str1.begin(),str1.end(),':'),str1.end());
 for (int i = pos + 1;i <= str.size(); i++) {
   str2.push_back(str[i]);
 }

 str2.erase(remove(str2.begin(),str2.end(),','),str2.end());
 str2.erase(remove(str2.begin(),str2.end(),':'),str2.end());

 string str3;
 string str4;
 for (int i = 0; i < str1.size(); i++) {
  str3.push_back(str1[i]);
  i++;
  if (i < str1.size()) {
   str4.push_back(str1[i]);
  }
 }
 string str5;
 string str6;

 for(int i = 0; i < str2.size(); i++) {
  str5.push_back(str2.size());
  i++;
  if (i < str2.size()) {
   str6.push_back(str2[i]);
  }
 }

 string str7;
 uint16_t s1;
 vector<uint16_t> test_1;
 for(int i = 0; i <  str4.size(); i++) {
  if(i < str6.size()) {
   s1 = str4[i] - str6[i];
   test_1.push_back(s1);
  }
  if (i > str6.size() - 1) {
   string test1 = "";
   test1[0] = str4[i];
   test_1.push_back(atoi(test1.c_str()));
  }
 }

 string StringValue;
 for(int k = 0; k < str3.size(); k++) {
  if (test_1[k] != 0) {
    char c_test = (char)(test_1[k] + 48);
    StringValue.push_back(str3[k]);
    StringValue.push_back(c_test);
  }
 }
 string Test_String;
 for (int k = 0; k < StringValue.size(); k++) {
   if (k%2 == 0 && StringValue[k] != '0') {
    Test_String.push_back(StringValue[k]);
    Test_String.push_back(':');
   }
   if (k%2 != 0 && k < StringValue.size() && StringValue[k] != '0') {
    Test_String.push_back(StringValue[k]);
    Test_String.push_back(',');
   }
 }
 Test_String.erase(Test_String.size() - 1);
 cout << Test_String << endl;
 return "Test_String";
}

int main() {
 string str = "a:3,b:5,c:2,d:5@a:3,b:5,c1";
 GetStringTongJi(str);
 return 0;
}


/*
    给定两个字符集合
    一个是全量字符集
    一个是已占用字符集
    已占用字符集中的字符不能再使用
    要求输出剩余可用字符集

    输入描述
     1. 输入一个字符串 一定包含@
     @前为全量字符集  @后的为已占用字符集
     2. 已占用字符集中的字符
     一定是全量字符集中的字符
     字符集中的字符跟字符之间使用英文逗号隔开
     3. 每个字符都表示为字符+数字的形式
      用英文冒号分隔
      比如a:1标识一个a字符
     4. 字符只考虑英文字母，区分大小写
      数字只考虑正整型 不超过100
     5. 如果一个字符都没被占用 @标识仍存在
     例如 a:3,b:5,c:2@

     输出描述：
       输出可用字符集
       不同的输出字符集之间用回车换行
       注意 输出的字符顺序要跟输入的一致
       不能输出b:3,a:2,c:2
       如果某个字符已全部占用 则不需要再输出

      示例一：
       输入
       a:3,b:5,c:2@a:1,b:2
       输出
       a:2,b:3,c:2
       说明：
       全量字符集为三个a，5个b，2个c
       已占用字符集为1个a，2个b
        由于已占用字符不能再使用
       因此剩余可用字符为2个a，3个b，2个c
       因此输出a:2,b:3,c:2
*/
